//必须带done回调 执行完成调用
import isArray from 'lodash/isArray'
import { getModelByModelTree } from '@ve/utils/utils'
export default function defaultFocusNextModule({ vm, action, done }) {
  let moduleIdList = action.extension.moduleId.value
  if (isArray(moduleIdList)) {
    let moduleId = moduleIdList[0]
    if (moduleId) {
      // let _module = vm.vuiComponents[moduleId]
      // const _modelRef = _module && _module.ref
      // _modelRef && _modelRef.focus && _modelRef.focus()
      // _modelRef && _modelRef.select && _modelRef.select()

      if (moduleId && moduleId.indexOf('uiDynamicFormLot') > -1) {
        // 如果选择的是批次属性组件 则进入批次属性组件内部
        const moduleTree = vm.$store.state.preview.pages[vm.$store.state.preview.nowPageId]
        const lotModule = getModelByModelTree(moduleId, moduleTree)
        if (lotModule.CUR_LOT_list && lotModule.CUR_LOT_list.length) {
          // 如果批次属性组件有配置光标停留组件，则聚焦第一个组件
          moduleId = lotModule.CUR_LOT_list[0]
        }
      }
      if (!moduleId) return
      if (moduleId.indexOf('uiSelectLayerNew') > -1 || moduleId.indexOf('uiButton') > -1) {
        // 如果下一个组件是三点选择组件 或者按钮组件 则单独触发组件的回车选中方法
        const moduleSelf = vm.vuiComponents[moduleId] && vm.vuiComponents[moduleId].self
        moduleSelf && moduleSelf.enterFocus()
      } else {
        const moduleRef = vm.vuiComponents && vm.vuiComponents[moduleId] && vm.vuiComponents[moduleId].ref
        if (moduleRef && moduleRef.focus) {
          moduleRef.focus()
        }
        if (moduleRef && moduleRef.select) {
          moduleRef.select()
        }
      }
    }
  }
  done(null, {})
}
